import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
const path = require('path')
import viteCompression from 'vite-plugin-compression'

export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  // const env = loadEnv(mode, process.cwd(), '')

  if (command === 'serve') {
    // dev 独有配置
    return {
      plugins: [
        vue({
          reactivityTransform: true
        }),
        vueJsx()
      ],
      resolve: {
        alias: {
          // @ts-ignore
          '@': path.resolve(__dirname, 'src')
        }
      },
      //启动服务配置
      server: {
        host: '0.0.0.0',
        port: 8000,
        open: false,
        https: false,
        proxy: {}
      },
      // 全局样式
      css: {
        preprocessorOptions: {
          scss: {
            additionalData: '@import "@/assets/style/main.scss";'
          }
        }
      }
    }
  }
  // command === 'build'
  // build 独有配置
  return {
    plugins: [
      vue({
        reactivityTransform: true
      }),
      vueJsx(),
      // gzip压缩 生产环境生成 .gz 文件
      viteCompression({
        verbose: true,
        disable: false,
        threshold: 10240,
        algorithm: 'gzip',
        ext: '.gz'
      })
    ],
    resolve: {
      alias: {
        // @ts-ignore
        '@': path.resolve(__dirname, 'src')
      }
    },
    //启动服务配置
    server: {
      host: '0.0.0.0',
      port: 8000,
      open: true,
      https: false,
      proxy: {}
    },
    build: {
      minify: 'terser',
      outDir: 'dist',
      terserOptions: {
        compress: {
          drop_console: true,
          drop_debugger: true
        }
      }
    },
    // 全局样式
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: '@import "@/assets/style/main.scss";'
        }
      }
    }
  }
})
